#include "widget.h"
#include "ui_widget.h"
#include <QNetworkReply>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    // 初始化http管理器
    manager = new QNetworkAccessManager(this);
    // 设置窗口标题
    this->setWindowTitle("客户端");
}

Widget::~Widget()
{
    delete ui;
}


void Widget::on_pushButton_clicked()
{
    // 点击发送按钮，获取url的响应
    // 获取输入框中的 url
    QUrl url = ui->lineEdit->text();
    // 根据 url 构建请求
    QNetworkRequest request(url);
    // 对 url 发送请求，通过响应进行接受：get方法只负责发送请求，其他的不管
    QNetworkReply* response = manager->get(request);
    // 清空输入框
    ui->lineEdit->clear();
    // 通过信号槽的机制判断客户端是否收到了完整的响应
    connect(response, &QNetworkReply::finished, this, [=](){
        QString body;
        // 判断接受的响应是成功还是否
        // 没有出错
        if(response->error() == QNetworkReply::NoError)
            // 读取响应 body
            body = response->readAll();
        // 出错了
        else
            body = response->errorString();
        ui->plainTextEdit->setPlainText(body);
        // 还需要对客户端进行释放
        response->deleteLater();
    });
}
